草庐IT

c++ - C++中static的含义

全部标签

c++ - 为什么在这里使用 static_cast 而不是 reinterpret_cast 很重要?

AtareplyofablogpostofRaymondChen,提问者指出Raymond,IbelievetheC++exampleisnotcorrectsincethepositionofthebaseclasssubobjectinthederivedclassisunspecifiedaccordingtoISOC++2003Standard(10-3,page168),andyouassumethatthebaseclasssubobjectisalwaysatthebeginning.TheCexamplewouldbefineinC++too,soI'dstickwit

c++ - 隐式默认可构造的含义?

关于thisreferencepage对于std::tuple据说该类型的默认构造函数是“显式的当且仅当Ti对于至少一个不是隐式默认构造的我”。我对“隐式默认可构造”的含义有点困惑。有人可以给我举个例子吗? 最佳答案 这是一个例子:structA{};structB{explicitB()=default;};intmain(){Aa1={};Aa2{};//Bb1={};//Error,woulduseexplicitdefaultconstructorBb2{};}自C++11以来,由于列表初始化,具有explicit的构造函数

c++ - int *pi = new int(0); 中 int(0) 的含义?

int*pi=newint(0);这里的0有什么意义?是不是表示长度为0的整数数组? 最佳答案 它是一个初始化器(构造函数参数)。新创建的int的值为0。 关于c++-int*pi=newint(0);中int(0)的含义?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3056309/

c++ - (数字)和(-数字)的含义

(number)&(-number)是什么意思?我已经搜索过了,但无法找到含义我想在for循环中使用i&(-i),例如:for(i=0;i 最佳答案 假设2的补码(或者i是无符号的),-i等于~i+1。i&(~i+1)是提取i的最低设置位的技巧。之所以有效,是因为+1实际上所做的是设置最低清除位,并清除所有低于该位的位。所以在i和~i+1中设置的唯一位是i中的最低设置位(即,最低清除位在~i中)。低于它的位在~i+1中清零,高于它的位在i和~i之间不相等。除非循环体修改i,否则在循环中使用它似乎很奇怪,因为i=i&(-i)是一个幂等

c++ - 每次我想在基本类型之间进行转换时,我真的应该使用 static_cast 吗?

这是什么原因longl=1;charc=static_cast(l);floatf=1.0f;inti=static_cast(f);比这更好longl=1;charc=(char)l;floatf=1.0f;inti=(int)f;当将一种原始数据类型转换为另一种时?我有很多在类似情况下使用第二种样式进行类型转换的遗留代码,所以这也是一个关于我是否应该对该代码进行全面修订的问题。 最佳答案 面向future。假设将来我这样做:floatblah=1.0f;float*f=&blah;现在,inti=static_cast(f);停

c++ - 为什么使用 static_cast<int>(x) 而不是 (int)x?

我听说static_cast函数应该比C风格或简单函数风格的转换更受欢迎。这是真的?为什么? 最佳答案 主要原因是经典的C转换不区分我们所说的static_cast()。,reinterpret_cast(),const_cast(),和dynamic_cast().这四件事完全不同。Astatic_cast()通常是安全的。语言中有一个有效的转换,或者一个适当的构造函数使它成为可能。唯一有点冒险的时候是当你向下转换到一个继承的类时;您必须通过语言外部的方式(如对象中的标志)确保该对象实际上是您声称的后代。dynamic_cast(

c++ - C++ 中 static 和 global 的替代品?

我有一个类实例需要被其他一些类访问。将实例始终沿构造链向下传递会非常麻烦。我尽量避免使用全局变量,因为人们往往反对这样做。我以为我将此实例声明为类的静态成员,然后包含此类以访问该实例,但这也不起作用错误:调用类“Foo”的私有(private)构造函数要在QGraphicsView框架的上下文中进一步说明问题:我想将由Controller类(管理项目)实例化的QGraphicsItems添加到QGraphicsScene,它是(但我不坚持这个细节)我的QMainWindow类的成员。我花了很多时间在互联网上搜索,但我是新手,有点被困在这里。对于解决困境的最佳方法是什么,我很感激。

c++ - std::type_info::hash_code() 的唯一性和 "should"的含义

是否意味着要保证相同的std::type_info::hash_code()值表示相同的类型?Cplusplus.com似乎是这么说的:Thisfunctionreturnsthesamevalueforanytwotype_infoobjectsthatcompareequal,anddifferentvaluesfordistincttypesthatdonot.[Emphasismine]Cppreference似乎另有说法:Returnsanunspecifiedvalue,whichisidenticalforobjects,referringtothesametype.No

c++ - 充分利用 static_assert 和 std::is_invocable

我有一个包含多个函数对象的库,这些函数对象可能只接受几种类型,具体取决于std::is_integral.我要std::is_invocable在条件失败时返回false,但当用户尝试调用函数对象的实例时,我还想要一个不错的static_assert错误消息。这是我目前拥有的函数对象的一个​​简化示例:structfunction{templateautooperator()(Iteratorfirst,Iteratorlast)const->std::enable_if_t::value_type>>{/*something*/}};通过这样的实现,std::is_invocable

c++ - 我怎样才能找出这个 ffmpeg 错误代码的含义?

我正在使用函数avcodec_decode_video2.在流中的编码更改时,它返回-1094995529。该文档仅说明:Onerroranegativevalueisreturned,otherwisethenumberofbytesusedorzeroifnoframecouldbedecompressed.但是似乎没有返回代码的枚举或任何其他形式的文档。错误是什么意思,一般情况下我该如何确定? 最佳答案 来自ffmpeg的错误代码(来自avutil的error.h):http://ffmpeg.org/doxygen/trun